import { ref } from 'vue'

const projectCenter: any = {
  namespaced: true,
  state: {
    //项目字典集合
    projectDict: {},
    //合同字典集合
    contratDict: {},
    //组织机构列表数据
    orgList: [],
    //组织机构列表数据
    allOrgList: [],
    //收入类型
    incomeType: [],
    //中咨系统请求参数
    ZhongziConfig: {},
    //组织机构列表默认展开数据
    orgDefaultExpandedKeys: [],
    //用户列表数据
    allUserList: [],
    //合同语言
    conLanguage: [],
    //合同业务类型
    conBusinessType: [],
    //业务类型
    businessType: [],
    // 币种信息
    currencies: [],
    // 境内行政区接口
    conRegion: [],
    // 国家与地区接口
    adminRegion: [],
    //省市列表
    allLocationList: [],
    //项目下拉列表
    projectList: [],
    rowId: '',
    //预算表样式
    ysbys:'0',
    //项目数据表单
    form: {
      dataid:'',
      id: '',
      projectCategory: '', //项目分类值：字典1-科技研发项目，2-数字化项目
      projectCategoryName: '', //项目分类名称
      projectName: '', //项目名称
      projectNumber: '', //项目编号
      primaryDataNumber: '', // 主数据编号  zproject
      foreignName: '', //项目外文名称   zprojname
      mainProjectId: '', //主项目id
      mainProjectName: '', //主项目名称
      projectYear: '', //立项年份  zprojyear
      department: '', //关联部门
      departmentName: '', //关联部门名称
      formerName: '', //项目曾用名
      projectFlag: '', //是否为工程应用项目
      level: '', //项目级别
      projectSource: '', //项目来源
      primaryProfessionType: '', // 专业类型（一级）
      secondaryProfessionType: '', // 专业类型（二级）
      tertiaryProfessionType: '', // 专业类型（三级）
      entrustedUnit: '', // 委托单位
      entrustedUnitName: '', // 委托单位名称
      internalUnit: '', // 内部承担单位
      internalUnitName: '', // 内部承担单位名称
      undertakingUnitId: '', //外部承担单位
      undertakingUnitName: '', // 外部承担单位名称
      projectLeader: '', // 项目负责人
      contactNumber: '', // 联系电话
      startTime: '', // 项目开始时间   zstartdate
      endTime: '', // 项目结束时间    zfindate
      totalFunding: '', // 总经费(万元)
      fundingCurrency: '', // 项目总费用币种字典value
      fundingCurrencyName: '', // 项目总费用币种字典name
      affiliatedUnit: '', // 所属单位
      affiliatedUnitName: '', // 所属单位名称
      secondaryUnit: '', // 所属二级单位
      secondaryUnitName: '', // 所属二级单位名称
      researchCategory: '', // 研究类别字典值
      researchCategoryName: '', // 研究类别名称
      researchDirection: '', //研究方向字典值
      researchDirectionName: '', //研究方向名称
      industrialChain: '', //产业链字典值
      industrialChainName: '', //产业链字典名称
      patentOwnershipDeclaration: '', // 专利权属声明
      softwareCopyright: '', // 软著信息
      remarks: '', // 备注
      researchTarget: '', // 研发目标
      mainResearchContent: '', // 主要研究内容
      projectType: '', // 项目类别
      projectTypeName: '', // 项目类别名
      projectStatus: '0', // 项目状态
      // ------文件信息------
      projectApplication: '', //立项申请书
      rdForm: '', //RD表
      patentDeclarationAttachment: '', //专利权属声明附件
      softwareScreenshot: '', //软著录屏
      paper: '', //论文
      standard: '', //标准
      constructionMethod: '', //工法
      projectInvestmentsList: [
        //项目投入列表
        // {
        //   investmentType: '',
        //   investmentTypeName: '',
        //   subject: '',
        //   subjectName: '',
        //   amount: '',
        // },
      ],
      projectPersonnelsList: [
        //相关人员列表
        // {
        //   ranking: '',
        //   personName: '',
        //   personId: '',
        //   unitName: '',
        //   unitId: '',
        //   age: '',
        //   positionTitle: '',
        //   workAllocation: '',
        //   projectPosition: '',
        // },
      ],
      projectParticipantsList: [
        //参与单位列表
        // {
        //   ranking: '',
        //   participationType: '',
        //   participationTypeName: '',
        //   unitName: '',
        //   unitId: '',
        //   leader: '',
        //   leaderId: '',
        //   workAllocation: '',
        // },
      ],
      changeProjectsList: [
        //项目变更列表
        // {
        //   afterContent: 'string', //变更后内容
        //   applicantId: 'string', //申请人id
        //   applicantName: 'string', //申请人名称
        //   applicationTime: '2023-07-31T08:09:03.673Z', //申请时间
        //   beforeContent: 'string', //变更前内容
        //   description: 'string', //申请变更描述
        //   projectId: 'string', //项目ID
        //   requestFlag: 'string', //更改请求标识
        //   status: 'string', //状态值 草稿1、待审批2、审批通过3、审批拒绝4
        //   statusName: 'string', //状态名称：草稿、待审批、审批通过、审批拒绝
        //   type: 'string', //变更类型值
        //   typeName: 'string', //变更类型：负责人变更、项目内容变更、承接单位变更
        // }
      ],
    },
    //项目变更数据表单
    changeForm: {
      id: '',
      applicantId: '', //申请人id
      applicantName: '', //申请人名称
      // applicationTime: '', //申请时间
      afterContent: '', //变更后内容id
      afterContentName: '', //变更后内容名称
      beforeContent: '', //变更前内容
      description: '', //申请变更描述
      projectId: '', //项目ID
      requestFlag: '', //更改请求标识
      status: '', //状态值 草稿1、待审批2、审批通过3、审批拒绝4
      statusName: '', //状态名称：草稿、待审批、审批通过、审批拒绝
      type: '', //变更类型值
      typeName: '', //变更类型：负责人变更、项目内容变更、承接单位变更
    },
    //变更审批表单
    examineForm: {
      id: '', //变更申请id
      approvalComments: '', //审批意见
      leaderFileName: '', //领导审批附件名称
      leaderReviewComments: '', //审批意见
      attachment: '', //附件url
      status: 1, //状态值
    },
    //合同数据表单
    contractForm: {
      id: '',
      projectName: '', //项目名称
      projectId: '', //项目id
      projectMainDataCode: '', //项目主数据编码
      contractName: '', //合同名称
      contractNumber: '', //合同编号
      contractMainDataCode: '', //合同主数据编码
      contractType: '', //合同类型
      contractTypeName: '', //合同类型名称
      contractNature: '', //合同性质
      contractNatureName: '', //合同性质名称
      originalContractMainDataCode: '', //原合同主数据编码(补充合同时)
      originalContractName: '', //原合同名称(补充合同时)
      contractAmendedTotalAmount: '', //合同变更后总金额(补充合同时)
      applyingUnit: '', //申请单位
      applyingUnitName: '', //申请单位名称
      partyA: '', //甲方
      partyB: '', //乙方
      contractSigningMethod: '', //合同签订方式
      contractLanguage: '', //合同语言
      contractLanguageName: '', //合同语言名称
      involvesMultipleParties: '', //是否设计多方
      provisionalSum: '', //暂定金(万元)
      contractAmount: '', //合同金额(万元)
      taxRate: '', //税率（%）
      taxAmount: '', //税额
      contractNetAmount: '', //合同净额(万元)
      signingDate: '', //签订日期
      stampingDate: '', //盖章日期
      projectUndertakingUnit: '', //项目承担单位
      projectUndertakingUnitName: '', //项目承担单位名称
      businessSector: '', //业务版块
      businessSectorName: '', //业务版块名称
      scheduledStartDate: '', //规定开工日期
      scheduledCompletionDate: '', //规定完工日期
      performanceCountry: '', //合同履行地(国家)
      performanceCountryName: '', //合同履行地(国家)名称
      performanceProvince: '', //合同履行地(省)
      performanceProvinceName: '', //合同履行地(省)名称
      performanceCity: '', //合同履行地(市)id
      performanceCityName: '', //合同履行地(市)名称
      projectStartProvince: '', //项目起点省
      projectStartProvinceName: '', //项目起点省名称
      projectStartCity: '', //项目起点市
      projectStartCityName: '', //项目起点市名称
      projectEndProvince: '', //项目终点省
      projectEndProvinceName: '', //项目终点省名称
      projectEndCity: '', //项目终点市
      projectEndCityName: '', //项目终点市名称
      mileage: '', //里程(KM)
      businessType: '', //业务类型
      businessTypeNme: '', //业务类型名称
      businessSubtype: '', //业务类型细分
      businessSubtypeName: '', //业务类型细分名称
      engineeringType: '', //工程类型
      engineeringTypeName: '', //工程类型名称
      engineeringPhase: '', //工程阶段
      engineeringPhaseName: '', //工程阶段名称
      projectLeader: '', //项目负责人
      projectLeaderName: '', //项目负责人名称
      contractBusinessType: '', //合同业务类型
      contractBusinessTypeName: '', //合同业务类型名称
      contractBusinessSubtype: '', //合同业务类型细分
      contractBusinessSubtypeName: '', //合同业务类型细分名称
      contractFormType: '', //合同表单类型
      contractFormTypeName: '', //合同表单类型名称
      inpayType: '', //收支类型
      inpayTypeName: '', //收支类型名称
      disputeResolutionMethod: '', // 争议解决方式
      disputeResolutionMethodName: '', // 争议解决方式名称
      contractTemplateUsage: '', // 合同范本使用情况
      contractTemplateUsageName: '', // 合同范本使用情况名称
      contractHandler: '', // 合同承办人
      contractHandlerContact: '', // 合同承办人联系方式
      managementDepartment: '', // 管理部门
      managementDepartmentName: '', // 管理部门名称
      actualPerformanceSubject: '', // 合同实际履约主体
      ourContractingParty: '', // 我方签约单位
      ourContractingPartyName: '', // 我方签约单位名称
      contractStatus: '', // 合同状态:履行中1/履行异常2/履行完毕3/终止4
      totalAmountCurrency: '', // 总金额币种
      outputReportingMethod: '', // 产值填报方式
      incomeType: '', // 收入类型
      incomeTypeName: '', // 收入类型名称
      submittedToLegalPersonApproval: '', //是否提交企业法人签批
      legalPersonSealPermission: '', // 是否准许使用法人章
      numberOfContractCopiesName: '', // 持有合同份数
      storageMethod: '', // 入库方式
      storageMethodName: '', // 入库方式名称
      importantProject: '', // 是否为重要项目
      contractClassification: '', // 合同分类
      contractClassificationName: '', // 合同分类名称
      departmentLeaderApproval: '', // 部门领导会签
      companyLeaderApproval: '', // 公司领导会签
      requiresRelatedManagerApproval: '', // 是否需要相关主管认领
      requiresGeneralManagerApproval: '', // 是否需要总经理审批
      remarks: '', // 备注
      contractPlanList: [], //进度执行列表
      contractBudgetList: [], //项目经费预算列表
    },
    //合同变更表单
    changeContractForm: {
      id: '',
      applicantName: '', //申请人名称
      changeType: '', //合同变更类型
      changeTypeName: '', //合同变更类型名称
      projectId: '', //项目id
      projectName: '', //项目名称
      projectNumber: '', //项目编号
      contractId: '', //合同id
      changeReason: '', //变更原因
      attachment: '', //附件
      status: '', //（状态字典，草稿、待审批、审批通过、审批拒绝）
      contractPlanList: [], //进度执行列表
    },
    //经费详情表单
    fundingDetails: {
      scheduleContractDetails: [],
      scheduleSubpackageDetails: [],
      scheduleIntelligentCosts: [],
    },
    //计划变更表单
    planChangesForm: {
      projectId: '',
      projectName: '',
      contractNumber: '',
      contractName: '',
      applyReason: '',
      applyContent: '',
      status: 0,
      history: [],
      current: [
        {
          nodeName: '',
          planPeriod: '',
          planContent: '',
          assessmentTarget: '',
        },
      ],
    },
    //验收申请表单
    applicationForm: {
      id: '',
      projectNumber: '',
      projectName: '',
      contractNumber: '',
      affiliatedUnit: '',
      projectLeader: '',
      checkType: '',
      requestInstructions: '',
      applyPerson: '',
      status: '',
      contractAmount: '',
      startTime: '',
      endTime: '',
      checkFileName: '',
      checkFilePath: '',
      // checkConclusion: '', //"验收结论",
      // problemSuggestion: '', // "问题建议",
      // reviewResults: '', // "专家评论结果",
      // fileName: '', // "审核附件名称",
      // filePath: '', // "审核附件路径"
    },
    //验收申请详情
    applicationDetail: {
      id: '',
      projectName: '',
      contractNumber: '',
      affiliatedUnit: '',
      projectLeader: '',
      checkType: '',
      requestInstructions: '',
      applyPerson: '',
      status: '',
    },
    //项目验收表单
    projectAcceptanceForm: {
      checkConclusion: '',
      problemSuggestion: '',
      reviewResults: '',
      fileName: '',
      filePath: '',
      details:[]
    },
    //上报详情表单
    reportDetailForm: {
      releaseId: '',
      otherInstructions: '',
      nextMeasures: '',
      delayReasons: '',
      completedPlanned: '',
      masterSchedule: '',
      fileName: '',
      filePath: '',
    },
    //审查详情表单
    examineDetailForm: {
      reportTime: '',
      releaseTypeDescribe: '',
      releaseContent: '',
      fileName: '',
      filePath: '',
    },
    //进度执行表单
    progressExecuteForm: {
      projectName: '', //项目名称
      contractName: '', //合同名称
      nodeName: '', //进度节点名称
      planPeriod: '', //计划周期
      planContent: '', //计划内容
      assessmentTarget: '', //考核目标
      reviewStatus: '', //状态
    },
    //计划变更表单
    planChangeForm: {
      projectName: '', //项目名称
      contractName: '', //合同名称
      applyPerson: '', //申请变更人
      applyDate: '', //申请时间
      applyReason: '', //变更原因
      status: '', //流程状态
    },
    //进度审查表单
    auditForm: {
      reviewOpinion: '', //审查意见
      reviewFileName: '', //审查附件名称
      reviewFilePath: '', //审查附件路径
      // status: 1, //状态值
    },
    //进度执行上报表单
    reportForm: {
      id: '', //id
      projectId: '', //projectId
      planContent: '', //计划内容
      implementationStatus: '', //执行情况
      delayReasons: '', //延迟完成内容及原因
      guaranteeMeasures: '', //下阶段工作重点及保证措施
      otherInstructions: '', //其他说明
      fileName: '', //上报附件名称
      filePath: '', //上报附件路径
      newAuthorizedPatent: '', //授权专利
      newAuthorizedSoftworks: '', //授权软著
      newSchoolWorks: '', //学校著作
      newAcademicPapers: '', //学术论文
      newTechnologyAwards: '', //技术成果
      status: '', //待审批
    },
  },
  mutations: {
    getRowId(state: any, id) {
      state.rowId = id
    },
    getReportDetailForm(state: any, data) {
      const arr1 = Object.keys(data)
      const list = state.reportDetailForm
      for (const key in list) {
        if (arr1.indexOf(key) !== -1) {
          list[key] = data[key]
        }
      }
      state.reportDetailForm = { ...list }
    },

    getExamineDetailForm(state: any, data) {
      const arr1 = Object.keys(data)
      const list = state.examineDetailForm
      for (const key in list) {
        if (arr1.indexOf(key) !== -1) {
          list[key] = data[key]
        }
      }
      state.examineDetailForm = { ...list }
    },

    getAcceptanceForm(state: any, data) {
      const arr1 = Object.keys(data)
      const list = state.acceptanceForm
      for (const key in list) {
        if (arr1.indexOf(key) !== -1) {
          list[key] = data[key]
        }
      }
      state.acceptanceForm = { ...list }
    },
    emptyReportDetailForm(state: any) {
      Object.keys(state.reportDetailForm).forEach((key) => {
        state.reportDetailForm[key] = ''
      })
    },

    emptyExamineDetailForm(state: any) {
      Object.keys(state.examineDetailForm).forEach((key) => {
        state.examineDetailForm[key] = ''
      })
    },

    emptyAcceptanceForm(state: any) {
      Object.keys(state.acceptanceForm).forEach((key) => {
        state.acceptanceForm[key] = ''
      })
    },
    emptyAuditForm(state: any) {
      Object.keys(state.auditForm).forEach((key) => {
        state.auditForm[key] = ''
      })
    },
    emptyReportForm(state: any) {
      Object.keys(state.reportForm).forEach((key) => {
        state.reportForm[key] = ''
      })
    },
  },
  actions: {},
}
export default projectCenter
